const express = require('express');
const app = express();
const session = require('cookie-session');
const path = require('path');
const fs = require('fs');
const svg = require('svg-captcha');

app.listen(3000, () => {
    console.log('服务器已开启');
})

//使用session功能
app.use(session({
    keys: ['keys', 'pass']
}))

//post接参
app.use(express.urlencoded({ extended: false }));
app.use(express.json());

//渲染注册
app.get('/register', (req, res) => {
    res.sendFile(path.join(__dirname, 'register.html'));
})

//渲染登录
app.get('/login', (req, res) => {
    res.sendFile(path.join(__dirname, 'login.html'));
})

//拿到后台的数据
let obj = JSON.parse(fs.readFileSync(path.join(__dirname, 'persons.json')))

//回应验证码到页面
app.use('/code', (req, res) => {
    //生成验证码
    let yzm = svg.create({
        size: 4,//验证码长度
        color: true,//验证码颜色开启
        background: '#ccc',//验证码背景色
        ignoreChars: 'Ll1oO'//容易混淆的验证码
    })
    //设置验证码类型
    res.type('svg');
    //验证码回应到页面
    res.send(yzm.data)
    // console.log(yzm.text);
})

// 详情前端请求注册
app.post('/doregister', (req, res) => {

    //判断验证码
    console.log(yzm.text);

    //拿到用户提交的数据
    let userData = req.body;
    console.log(userData);

    //遍历后台数据，跟用户输入的账号密码对比
    let s = obj.find(item => item.username == userData.username && item.password == userData.password);

    //如果没有注册，就追加到persons.json文件内,如果有就提示用户已存在
    if (s) {
        res.send('用户已存在')
    } else {

        // obj.push({})
        res.send('注册成功')
    }
})



//响应前端请求登录
app.post('/login', (req, res) => {
    //拿到用户提交的数据
    let userData = req.body;
    console.log(userData);

    //遍历后台数据，跟用户输入的账号密码对比
    let s = obj.find(item => item.username == userData.username && item.password == userData.password);

    //如果拿到数据，则用session功能存起来，否则提示用户名输入账号密码错误
    if (s) {
        req.session.username = userData.username;
        res.send('登录成功')
    } else {
        res.send('用户名或密码错误')
    }
})

//登录成功后跳转到首页
app.get('/index', (req, res) => {
    //如果取到用户名，则可以正常访问，否则跳转到去登录
    if (req.session.username) {
        res.sendFile(path.join(__dirname, 'index.html'))
    } else {
        res.sendFile(path.join(__dirname, 'login.html'))
    }
})
